import axios from 'axios'
import { Toast } from "vant"
// axios 配置代码 


// 封装代码 get post delete patch 
// 反向代理不能使用基路径 

const AUTH_TOKEN = ''
    // axios.defaults.baseURL = "http://localhost:8081/"

export function showLoading(msg = '加载中...') {
    Toast.clear();
    Toast.loading({
        message: msg,
        forbidClick: true,
    });
}

export function showSuccess(msg = '成功') {
    Toast.clear()
    Toast.success(msg)
}

export function showFail(msg = '失败') {
    Toast.clear()
    Toast.fail(msg)
}


// Interceptors 拦截器
// 添加一个请求发送之前的拦截器
axios.interceptors.request.use(function(config) {
    // 请求发送之前做点事情 
    // 请求动画 Loading 
    showLoading()
    return config;
}, function(error) {

    // 请求发送失败 
    console.log(error)
    showFail('请求失败')
    return Promise.reject(error);
});


// 添加一个响应完成之前的拦截器 
axios.interceptors.response.use(function(response) {
    console.log(response.data)
        // 根据状态 code 实现对应的业务逻辑 
    Toast.clear();
    // showSuccess() 手机端不会出现成功提示 
    return response;
}, function(error) {
    // 响应失败 
    // 404 503 
    console.log(error)
    showFail('服务器异常')
    return Promise.reject(error);
});


// 增删改查  Promise 
// get
export function get(url, params, headers) {
    return new Promise(function(resolve, reject) {
        axios({
                url,
                method: "GET",
                params: params,
                headers,
            })
            .then(result => {
                resolve(result.data) // axios 里面的 data 数据解析 
            })
            .catch(err => {
                reject(err)
            })
    })
}
// post
export function post(url, data, params, headers) {
    return new Promise(function(resolve, reject) {
        axios({
                url,
                method: "post",
                params: params, // POST 也可以拼接 url?id=1
                headers: headers,
                data, // POST 请求提交的数据 
            })
            .then(result => {
                resolve(result.data) // axios 里面的 data 数据解析 
            })
            .catch(err => {
                reject(err)
            })
    })
}
// delete
export function Delete(url, id) {
    return new Promise(function(resolve, reject) {
        axios({
                url: url + id,
                method: "delete",

            })
            .then(result => {
                resolve(result.data) // axios 里面的 data 数据解析 
            })
            .catch(err => {
                reject(err)
            })
    })
}
// patch
export function Patch(url, data, id) {
    return new Promise(function(resolve, reject) {
        axios({
                url: url + id,
                method: "patch",
                data
            })
            .then(result => {
                resolve(result.data)
                console.log(result.data);
                // console.log(resolve(result.data)); // axios 里面的 data 数据解析 
            })
            .catch(err => {
                reject(err)
            })
    })
}



export {
    axios
}